﻿using MudEngine.Parsing.AST;

namespace MudEngine.Parsing
{
	public abstract class AbstractAstNodeVisitor<T> : IAstNodeVisitor<T>
	{
		public virtual void VisitBinaryExpression(BinaryExpression binaryExpression, T ctx)
		{
		}

		public virtual void VisitAssignmentExpression(AssignmentExpression assignmentStatement, T ctx)
		{
		}

		public virtual void VisitBlockStatement(BlockStatement blockStatement, T ctx)
		{
		}

		public virtual void VisitWhileStatement(WhileStatement whileStatement, T ctx)
		{
		}

		public virtual void VisitCompilationUnit(CompilationUnit compilationUnit, T ctx)
		{
		}

		public virtual void VisitUnaryExpression(UnaryExpression unaryExpression, T ctx)
		{
		}

		public virtual void VisitIdentifierExpression(IdentifierExpression identifierExpression, T ctx)
		{
		}

		public virtual void VisitConstantExpression(ConstantExpression constantExpression, T ctx)
		{
		}

		public virtual void VisitUsingDeclaration(UsingDeclaration usingDeclaration, T ctx)
		{
		}

		public virtual void VisitInheritDeclaration(InheritDeclaration inheritDeclaration, T ctx)
		{
		}

		public virtual void VisitFunctionDeclaration(FunctionDeclaration functionDeclaration, T ctx)
		{
		}

		public virtual void VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T ctx)
		{
		}

		public virtual void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T ctx)
		{
		}

		public virtual void VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T ctx)
		{
		}

		public virtual void VisitCaseLabel(CaseLabel caseLabel, T ctx)
		{
		}

		public virtual void VisitSwitchSectionNode(SwitchSectionNode switchSectionNode, T ctx)
		{
		}

		public virtual void VisitIfElseExpression(IfElseExpression ifElseExpression, T ctx)
		{
		}

		public virtual void VisitExpressionStatement(ExpressionStatement expressionStatement, T ctx)
		{
		}

		public virtual void VisitCastExpression(CastExpression castExpression, T ctx)
		{
		}

		public virtual void VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T ctx)
		{
		}

		public virtual void VisitForStatement(ForStatement forStatement, T ctx)
		{
		}

		public virtual void VisitReturnStatement(ReturnStatement returnStatement, T ctx)
		{
		}

		public virtual void VisitBreakStatement(BreakStatement breakStatement, T ctx)
		{
		}

		public virtual void VisitContinueStatement(ContinueStatement continueStatement, T ctx)
		{
		}

		public virtual void VisitDoWhileStatement(DoWhileStatement doWhileStatement, T ctx)
		{
		}

		public virtual void VisitInvocationExpression(InvocationExpression invocationExpression, T ctx)
		{
		}

		public virtual void VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T ctx)
		{
		}

		public virtual void VisitEnumDeclaration(EnumDeclaration enumDeclaration, T ctx)
		{
		}

		public virtual void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T ctx)
		{
		}

		public virtual void VisitDynamicParameterDeclaration(DynamicParameterDeclaration dynamicParameterDeclaration, T ctx)
		{
		}

		public virtual void VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T ctx)
		{
		}

        public virtual void VisitIndexedIdentifierExpression(IndexedIdentifierExpression indexedIdentifierExpression, T ctx)
		{
		}

        public virtual void VisitSwitchStatement(SwitchStatement switchStatement, T ctx)
		{
		}

        public virtual void VisitLambdaExpression(LambdaExpression lambdaExpression, T ctx)
        {
        }

        public virtual void VisitMapExpression(MapInitializerExpression mapExpression, T ctx)
        {
        }

        public virtual void VisitCatchExpression(CatchExpression catchExpression, T ctx)
        {
        }

        public virtual void VisitForEachStatement(ForEachStatement forEachStatement, T ctx)
        {
        }
    }
}
